机器学习可视化技术概览(Python)
【导读】大家好,我是泳鱼。一个乐于探索和分享AI知识的码农!本文介绍通过机器学习的可视化技术以解释和理解模型这个"黑盒子"的开发与运作。
机器学习的可视化(VIS4ML)是利用可视化技术来解释和理解机器学习模型的过程。由于数据质量极大地影响了机器模型的性能,如图1,本文从数据出发,介绍了机器学习模型输入常见的五种数据类型,并介绍了六个以数据为中心的任务应用于来自机器学习流程不同阶段的三种类型的操作数据及机器学习可视化工具与技术,帮助大家更好地理解、诊断和完善机器学习模型。
图1 以数据为中心的分类法。ML 模型的输入数据由五种不同类型组成 (c)。六个以数据为中心的任务 (d) 应用于来自 ML 管道 (a) 不同阶段的三种类型的操作数据 (b),以帮助人们理解、诊断和完善 ML 模型。
1 常见数据类型
机器学习模型处理的五种数据类型为表格数据、序列数据、多维数组、图形和多模态数据。
对这些数据类型进行分类和操作非常重要,因为不同类型的数据可能需要不同的操作来理解、诊断和完善机器学习模型。通过对这些数据类型进行分类和操作,用户可以更好地了解数据和对其进行操作的模型,从而实现更有效和高效的机器学习工作流程。
1.1 表格数据
1.2 序列数据
1.3 多维数组数据
在机器学习中处理多维数组数据相关的一项挑战是需要学习大量参数。例如CNN可能有数百万个参数需要在大型数据集上进行训练。另一个挑战是需要处理大量数据,这在计算上可能会很昂贵。此外,多维数组数据可能需要预处理步骤,例如标准化或数据增强,以提高模型性能。
1.4 图数据
1.5 多模态数据
2 机器学习流程
机器学习流程通常包括数据预处理、特征工程、模型选择、训练、评估和部署等步骤。扩展阅读:一文全览机器学习建模流程(Python代码)
2.1 数据预处理
2.2 特征工程
2.3 模型选择
模型选择是指在机器学习中选择最适合特定任务的模型的过程。在模型选择中,需要考虑多个因素,如模型的复杂度、准确性、可解释性、训练时间和资源消耗等。模型选择是机器学习流程中非常重要的一步,可以对模型的性能产生重大影响。
在选择模型时,可以使用交叉验证、网格搜索和贝叶斯优化等方法来评估模型性能和寻找最佳模型参数。此外,还可以考虑使用集成学习方法来结合多个模型,以提高模型的准确性和鲁棒性。最终选择的模型应该能够在特定任务中表现出最佳的性能。扩展阅读:深度学习调参(炼丹)的权威指南!!!
2.4 模型训练
模型训练是指使用数据来训练机器学习模型的过程。在模型训练中,需要将数据分成训练集和测试集,并使用训练集来训练模型,以便模型能够学习数据中的模式。模型训练是机器学习流程中的重要步骤,可以对模型的性能产生重大影响。
提高模型训练的效果可以从多个方面入手,如增加数据量、优化模型结构、调整超参数、使用正则化方法、使用集成学习方法等。增加数据量可以提高模型的泛化能力,优化模型结构可以提高模型的准确性和效率,调整超参数可以优化模型的性能,使用正则化方法可以防止模型过拟合,使用集成学习方法可以结合多个模型以提高模型的准确性和鲁棒性。此外,还可以使用自动化机器学习工具来简化模型训练过程。拓展阅读:机器学习模型训练全流程!
2.5 模型评估
模型评估是指对已训练的模型进行测试、评估和验证,以确定其性能和准确性的过程。在机器学习和人工智能领域中,模型评估是非常重要的一步,它可以帮助我们了解模型的优点和缺点,以及在哪些情况下模型能够发挥最佳效果。
模型评估的步骤包括确定评估指标、准备数据集、计算评估指标、分析结果、监控模型性能。除此之外,还可以进行交叉验证、超参数调整等操作,以提高模型的性能和准确性。拓展阅读:一文深度解读模型评估方法
2.6 模型部署
模型部署是指将训练好的模型应用于实际生产环境中,以实现特定的业务目标。这一过程需要将模型转化为可执行的形式,并集成到现有的系统中。
模型部署涉及到一系列的技术和工具,包括模型解释、模型优化、模型部署平台等。在部署过程中,需要考虑模型的稳定性、可扩展性、可维护性、可靠性、安全性和易用性等因素,以确保模型的可靠性和可持续性。常见的模型部署平台包括云计算平台、服务器、嵌入式设备、移动设备等。模型部署之后,需要定期监控和评估模型的性能,并及时迭代更新,以确保模型的稳定性和可靠性。扩展阅读:机器学习模型迭代方法(Python)
3 数据中心任务
3.1 数据展示
数据展示就是将运营数据的信息可视化。这是每个机器学习工作都会进行的基本可视化操作,但不同的工作可能会关注来自不同机器学习阶段的数据。由于机器学习模型的数据是实例的集合,因此可视化映射要么关注单个数据实例(图2),要么关注一组实例的聚合(实例/组级别)(图3)。
图2 实例级别的展示。(a) 输入图像通过散点图展示,每个图像对应一个点。 (b) 中间隐藏状态通过热图展示,每行是一个实例(主成分),每列是一个时间步。 (c) 输出概率通过PCP展示,每个实例对应一条折线。
图3 组级别的展示。(a) 表格输入数据被分成子组并呈现为直方图。 (b) 来自实例子组的中间DNN激活被聚合在ActiVis 中,并呈现为圆圈,其颜色表示活跃水平。 (c) 基于桑基图的时间混淆矩阵用于呈现树提升模型训练期间的输出预测。
3.2 数据探索
探索数据是指使用可视化技术探索数据以获得对数据的洞察和理解的过程。它包括两种类型的探索:垂直探索和水平探索。
如图2(a1)所示,用户通过套索选择来选择紫色和棕色簇之间的实例(例如,具有相似概率为数字“4”和“9”的图像)。图2(a2)显示了这些图像的细节,并使用户能够进一步研究单个图像。
图4 探索不同 DNN 层(a1、a2)或训练的数据迭代(b1,b2)
如图5(c)所示,原始图空间和三个嵌入空间呈现为四个并置的散点图。扩展阅读:Python数据分析指南(全)
3.3 数据比较
机器学习可视化中的数据比较可识别操作数据的相似性和差异,以支持模型理解或诊断。他们关注单个数据实例或实例组,并且通常在实例/组内部或实例/组之间进行比较。
使用 PCP 来呈现在图像上训练的 βVAE 的潜在维度(图5(a))。通过扰动潜在维度的值并交互地将扰动的潜在表示解码回图像,用户 可以得出维度编码的内容。具体来说,图5(a)中的六张图像显示了同一输入图像的六次重建,但在维度 20 上具有不同的值。
如图5(b)所示,蓝色、橙色和紫色三种颜色分别对应于三个图像激活的神经元。跨层连接相同颜色的神经元形成相应图像的数据路径。作者还设计了一种新的可视化来有效地呈现这些数据路径及其随时间的演变模式(图5(b),底部)。
如图5(c)所示,每个散点图显示了一种算法生成的嵌入的降维结果。
如图5(d) 所示,每一行条形图都用一个指标(例如准确度、精确度和召回率)来表示所研究模型的性能,并且每个条形条(一行内)代表一个子组。
图5 (a) 实例内:SCANViz 比较同一图像的重建。(b) 实例间:AEVis 比较三个图像的数据路径以诊断对抗性攻击。(c) 组内:EmbeddingVis 比较来自不同模型的同一组实例的嵌入。(d) 组间:FairVis 比较不同实例组的模型性能。
3.4 数据评估
评估数据是指使用可视化技术来评估机器学习模型的输入和输出数据的质量和偏差,以便更好地理解、诊断和完善机器学习模型。机器学习可视化在数据评估方面的努力来自三个主要方向:(1)监控输入数据的质量以检测数据缺陷;(2) 评估 ML 模型的输出以进行评估;(3) 诊断机器学习模型的输入和输出,以揭示数据和模型中根源的偏差。
如图8(a1)所示,pi表示第i步的预测误差,1-pi是准确率。pmin 表示在步骤 i 结束的时间窗口内的最小错误率。条形字形显示了可疑漂移区域中准确度下降的幅度。根据掉落级别,使用不同的字形(例如,空心圆圈、实心圆圈/带十字的三角形)来标记图8(a2) 中的重要步骤。
如图8(b)所示,每个方块代表一个数据实例,其垂直位置反映了相应类别(即此处的C3)的概率。
图 8(c)通过根据排名分数对节点(蓝色或橙色方块)进行聚类,并将同一聚类的节点组织成水平矩形(带有黑色笔划)以实现平等曝光,可解决了内容偏差。
图8 (a) 旨在识别概念漂移的字形。(b) 每个方块代表一个实例,其垂直位置显示类别概率。方块字形及其位置也编码预测的正确性。(c) 图节点(橙色和蓝色)根据其排名分数进行聚类,同一聚类的节点呈现在矩形中以实现相似的曝光。还可以比较两个模型的排名。
3.5 数据生成
数据生成讲的是如何通过生成新的具有所需特征的实例来扩展数据集,以探索机器学习模型的行为并改进模型的性能。数据生成的本质是特征增强,可以直接在数据空间或间接在潜在空间中进行。通过生成新的具有所需特征的实例,可以探索模型在不同情况下的行为,例如“假设”分析和对抗性训练。扩展阅读:一文归纳Ai数据增强之法
如图9(a)所示,通过直接在原始图像上添加人工阴影来生成更多的训练图像。对它们进行微调的CNN表现出相当大的性能提升。
VAE 编码器用于将两个图像转换为 10D 潜在空间,如图 9(b1) 中的 PCP 所示。橙色和蓝色折线表示两个图像的 10D 潜在表示。然后,两条折线在各个潜在维度内(即青色带内)进行线性插值。最后,通过从插值区域采样折线并将其输入到 如图9(b2)所示,生成的图像呈现出从数字“4”(左上角)到“9”(右下角)平滑转移的特征。)。
图 9 (a) 通过添加人工生成的阴影来增强图像。DeepVID 通过对潜在向量 (b1) 进行插值,在待解释的数字“4”和“9”(b2) 之间生成图像。
3.6 改进数据
优化机器学习模型可以通过优化模型的架构/超参数或提高输入数据的质量来完成。 随着前者的技术不断成熟,模型开发人员越来越认识到从后者获得更大的性能提升相对更容易。这导致最近以数据为中心的人工智能越来越受欢迎。
4 工具和技术
使用 Matplotlib 绘制多曲线图:
# plot_multi_curve.py
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0.1, 2 * np.pi, 100)
y_1 = x
y_2 = np.square(x)
y_3 = np.log(x)
y_4 = np.sin(x)
plt.plot(x,y_1)
plt.plot(x,y_2)
plt.plot(x,y_3)
plt.plot(x,y_4)
plt.show()
使用 Seaborn 绘制 pairplot :
import seaborn as sns
import matplotlib.pyplot as plt
sns.set_theme(style="ticks")
df = sns.load_dataset("penguins")
sns.pairplot(df, hue="species")
plt.show()
Plotly是一款开源的交互式可视化工具,支持多种编程语言,如Python、R、MATLAB等。支持40余种图表类型如散点图、折线图、柱状图、热力图等,涵盖统计、金融、地理、科学和3D图表。可以帮助用户更好地展示数据和分析结果。
官网:https://plotly.com
使用 plotly 高级API——express:
import plotly.graph_objects as go # 标准引用格式,一般简写为:go
import plotly.express as px # 标准引用格式,一般简写为:px
tips = px.data.tips() # plotly内置数据集:tips
# 使用express绘图只需要调用一个函数
px.scatter(tips, x='total_bill', y='tip', width=900, height=600, title='tips').show()